﻿#pragma once

#include <vector>
#include <string>
#include <memory>

class UIData;
class ModelData;

/// @brief 数据基类
/// @note 所有数据都继承自此类
/// @note 所有数据都有一个输出结构名称 
class Data
{
public:
    Data();
    virtual ~Data();

public:
    std::string m_Name;     // 输出结构名称
};

/// @brief 数据管理中心
/// @note 管理所有的UI数据和建模数据
class DataCenter
{
public:
    static DataCenter& getInstance();

public:
    UIData* GetUIData(const std::string& name);
    ModelData* GetModelData(const std::string& name);
    
public:
    // 数据由DataCenters内部管理
    std::vector<UIData*>    m_UIDatas;      // UI数据
    std::vector<ModelData*> m_ModelDatas;   // 建模数据
    
private:
    DataCenter();
    ~DataCenter();
    DataCenter(const DataCenter&) = delete;
    DataCenter& operator=(const DataCenter&) = delete;
};